Redundant Array of Inexpensive Disk (RAID) systems have become the predominant form of mass storage systems in most computer systems today that are used in applications that require high performance, large amounts of storage, and/or high data availability, such as transaction processing, banking, medical applications, database servers, internet servers, mail servers, scientific computing, and a host of other applications. A RAID controller controls a group of multiple physical disk drives in such a manner as to present a single logical disk drive (or multiple logical disk drives) to a computer operating system. RAID controllers employ the techniques of data striping and data redundancy to increase performance and data availability.
An important characteristic of RAID controllers, particularly in certain applications such as transaction processing or real-time data capture of large data streams, is to provide fast write performance. In particular, the overall performance of the computer system may be greatly improved if the write latency of the RAID controller is relatively small. The write latency is the time the RAID controller takes to complete a write request from the computer system.
Many RAID controllers include a relatively large cache memory for caching user data from the disk drives. Caching the data enables the RAID controller to quickly return data to the computer system if the requested data is in the cache memory since the RAID controller does not have to perform the lengthy operation of reading the data from the disk drives. The cache memory may also be employed to reduce write request latency by enabling what is commonly referred to as posted-write operations. In a posted-write operation, the RAID controller reads the data specified by the computer system from the computer system into the RAID controller's cache memory and then immediately notifies the computer system that the write request is complete, even though the RAID controller has not yet written the data to the disk drives. Posted-writes are particularly useful in RAID controllers, since in some redundant RAID levels a read-modify-write operation to the disk drives must be performed in order to accomplish the system write request. That is, not only must the specified system data be written to the disk drives, but some of the disk drives may also have to be read before the user data and redundant data can be written to the disks, which, without the benefit of posted-writes, may make the write latency of a RAID controller even longer than a non-RAID controller.
However, posted-write operations make the system vulnerable to data loss in the event of a power failure. This is because the cache memory is a volatile memory that loses the user data when power is lost and the data has not yet been written to the disk drives.
To solve this problem, some RAID controllers include a battery to continue to provide power to the cache memory in the event of a loss of main power. Although the battery greatly reduces the likelihood that user data will be lost, because the energy stored in the battery is finite, the possibility still exists that the battery energy will run out before main power can be restored, in which case the user data will be lost. The minimum length of time the battery must supply power to the cache memory varies among users of RAID systems; however, many consumers require at least 72 hours in the event a power failure occurs on a weekend.
However, there are some well-known limitations associated with the use of batteries in this application. First, batteries are a relatively expensive component of the RAID controller. Second, for many of the relevant battery technologies the ability of the battery to hold a charge begins to degrade within two or three years, which is typically less than the expected lifetime of the RAID controller. Consequently, the RAID controller must be designed with the battery as a field-replaceable unit, and in many cases, as a hot-pluggable field-replaceable unit. This adds further cost to the RAID controller. Third, the operating temperature range of batteries outside of which their lifetime and performance degrade is relatively small. Fourth, after the battery has been drained due to a main power outage, the RAID controller must operate in lower performance write-through cache mode until the battery is re-charged, and the re-charge time of batteries is relatively long. Fifth, as the size of cache memories increases, so does the amount of energy the battery must provide during the main power outage. Given contemporary battery energy densities, the size of the battery required to provide the required amount of energy may exceed the available space within the RAID controller.
Therefore, what is needed is a RAID controller that employs an alternative solution for maintaining volatile posted-write data during a main power outage.